package br.com.virtual.cadastrar.service.impl;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Local;
import javax.ejb.Stateless;
import javax.inject.Inject;

import br.com.virtual.base.exceptions.VirtualValidationException;
import br.com.virtual.cadastrar.dao.FotoDAO;
import br.com.virtual.cadastrar.model.Foto;
import br.com.virtual.cadastrar.model.Produto;
import br.com.virtual.cadastrar.service.FotoService;
import br.com.virtual.cadastrar.service.PhotoManagerService;

@Stateless
@Local(FotoService.class)
public class FotoServiceImpl implements FotoService {

	@Inject private FotoDAO fotoDAO;
	@EJB private PhotoManagerService photoManagerService;
	
	@Override
	public Foto create(Foto foto) throws VirtualValidationException {
		return fotoDAO.create(foto);
	}

	@Override
	public List<Foto> create(List<Foto> fotos)
			throws VirtualValidationException {

		List<Foto> fotosAdicionarPasta = new ArrayList<Foto>();
		
		for (Foto foto : fotos){
			foto = create(foto);
			foto.setDescricao(foto.getId().toString());
			fotosAdicionarPasta.add(foto);
			update(foto);
		}

		this.photoManagerService.addPhotosToTemporaryDirectory(fotosAdicionarPasta);
		
		return fotos;
	}

	@Override
	public Foto read(Long id) {
		return fotoDAO.read(id);
	}

	@Override
	public void update(Foto foto) throws VirtualValidationException {
		fotoDAO.update(foto);
	}

	@Override
	public void delete(Foto foto) throws VirtualValidationException {
		fotoDAO.delete(foto);
	}

	@Override
	public List<Foto> getList(Produto produto) {
		return fotoDAO.getList(produto);
	}

	@Override
	public Foto getFirstByProduto(Produto produto) {
		return this.fotoDAO.getFirstByProduto(produto);
	}

	@Override
	public List<Foto> getListNotIn(List<Long> ids) {
		return this.fotoDAO.getListNotIn(ids);

	}

	@Override
	public List<Foto> getList() {
		return this.fotoDAO.getList();
	}

}
